![データ結合を使わずに Challenge #41: Analytics PayPeriodCalc に挑戦 – Alteryx Weekly Challenge](https://devio2023-media.developers.io/wp-content/uploads/2018/11/alteryx-weekly-challenge-intermediate-level-advent-calendar-2018.png)
データ結合を使わずに Challenge #41: Analytics PayPeriodCalc に挑戦 – Alteryx Weekly Challenge
こんにちは。Alteryxサポートエンジニアとして勉強中のスズです。
Alteryx Communityで公開されているWeekly Challengeに挑戦するシリーズ。
今回は前回挑戦したChallenge #41のAnalytics PayPeriodCalcに再度挑戦します。前回挑戦したエントリはこちら。
前回のエントリでは、データを分けてから処理を行い、最後にデータの結合を行っていました。今回はデータの結合を行わないという条件付きで挑戦します。
動作環境
当エントリの執筆には、以下の環境を利用しています。
- Windows 10 Pro
- Alteryx Designer 2019.1.4.57073 英語版
Challenge #41: Analytics PayPeriodCalc
お題
前回のエントリと重複しますが、改めてお題のご紹介です。
Input側のデータはこちら。1ヶ月を2回に分けて給料を支払うという想定で、P1の開始日と終了日、P2の開始日と終了日が用意されています。
Output側のデータはこちら。年月別に、P1とP2の日数が出力されています。日数は土曜日と日曜日を除いた平日の日数になっています。
解答のワークフロー全体図
今回作成するワークフローはこちら。データを横持ちに変換して処理を行っていきます。
日付の変換
Formulaツールを使用して、「Month」列をV_WString型で作成します。
「April, 2013」というような形式で出力するため、以下の設定をしています。
DateTimeFormat(DateTimeParse([P1 Start],"%m/%d/%Y"),"%B, %Y")
Transposeツールを使用して、「Month」列をキーにデータを横持ちに変換します。
この時点でデータは以下のとおりになっています。
Formulaツールを使用して、「Date」列をDate型で新しく作成します。
「Date」列には「Value」列の日付を変換して出力します。
DateTimeParse([Value],"%m/%d/%Y")
日数の出力
次は日数を出力していきます。Multi-Row Formulaツールを使って新しく「Days」列を作成し、「Name」列の「Start」から「End」の日数を出力します。
設定は以下とおりです。
IIF(Contains([Name], "Start"), DateTimeDiff([Row+1:Date], [Date], "days"), 0)
- 「Name」列に「Start」が含まれる場合は「Date」列の日付と1つ下の「Date」列の日付との日数を出力
- それ以外の場合は0を出力
Generate Rowツールを使って、「Days」列の日数分、行を作成します。「RowCount」列はDate型で作成し、日付を出力します。
Formulaツールを使用して、「RowCount」列に出力した日付の曜日を出力します。
日付の出力には以下の設定をしています。
DateTimeFormat([RowCount],"%A")
Filterツールを使用して、土曜日と日曜日、「Name」列に「End」が含まれているデータを取り除きます。
Custom filterには以下のとおり設定しています。
[Day of the week] != "Saturday" and [Day of the week] != "Sunday" and !Contains([Name], "End")
Summarizeツールを使用して、日数を出力します。「Month」列と「Name」列でグループ化し、データの数を出力します。
表示の調整
Cross Tabツールを使用して、データの持ち方を変えます。
- Group Data by these Values: 「Month」列
- New Column Headers: 「Name」列
- Values for New Columns: 「Count」列
Selectツールを使用して列の名前を修正します。
結果を確認して完成です。
最後に
今回はChallenge #41: Analytics PayPeriodCalcにデータの結合を使わずに挑戦しました。
サンプルワークフローのご案内
クラスメソッドでご契約のユーザー様向けに、当ブログでご紹介したワークフローを専用ポータルにて公開しております。当エントリでご紹介したワークフローも公開予定ですので、ご参考にしていただきますと幸いです。
Alteryxの導入なら、クラスメソッドにおまかせください
日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。